package com.creatorblue.service;

import java.io.File;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.creatorblue.bean.UserInfo;
import com.creatorblue.mapper.UserInfoMapper;

/**
 * 用户信息业务层类
 * @author zhuq
 *
 */
@Service
public class UserInfoService {

	@Autowired
	private UserInfoMapper uim;
	
	@Value("${accessPath}")
	private String accessPath;
	@Value("${uploadPath}")
	private String path;
	
	/**
	 * 根据主键ID查询单个用户信息
	 * @param id
	 * @return
	 */
	public UserInfo queryById(Integer id) {
		UserInfo user = uim.queryOne(id, null);
		user.setUserHeadimg(accessPath + user.getUserHeadimg());
		return user;
	}
	
	/**
	 * 根据账号查询单个用户信息
	 * @param name
	 * @return
	 */
	public UserInfo queryByName(String name) {
		return uim.queryOne(null, name);
	}
	
	/**
	 * 条件查询列表记录
	 * @param map 查询参数
	 * @return
	 */
	public List<UserInfo> queryAll(Map<String, Object> map){
		List<UserInfo> datas = uim.queryAll(map);
		for(UserInfo user : datas) {
			//填充访问路径前缀
			user.setUserHeadimg(accessPath + user.getUserHeadimg());
		}
		return datas;
	}
	
	/**
	 * 新增
	 * @param info 待新增的用户对象
	 * @return
	 */
	public int insert(UserInfo info){
		return uim.insert(info);
	}
	
	/**
	 * 修改
	 * @param info 待修改的用户对象
	 * @return
	 */
	public int update(UserInfo info){
		//如果上传了新头像，则将原头像图片物理删除
		if(info.getUserHeadimg() != null) {
			UserInfo user = queryById(info.getId());
			new File(path + user.getUserHeadimg().replace(accessPath, "")).delete();
		}
		return uim.update(info);
	}
	
	/**
	 * 删除
	 * @param ids 待删除的主键ID数组
	 * @return
	 */
	public int delete(Integer[] ids){
		for(Integer id : ids) {
			//删除用户信息的同时删除用户头像图片文件
			UserInfo user = queryById(id);
			new File(path + user.getUserHeadimg().replace(accessPath, "")).delete();
		}
		return uim.delete(ids);
	}
}
